print('算数运算符')
# 算数运算符
print(1 / 2)  # 除法运算 结果是小数
print(11 / 2)
print(11 // 2)  # 整除运算 结果是整数
print(-9 // -4)  # 2
print(-9 // 4)  # -3  一正一负/结果为负向下取整

print(3 % 2)  # 取模运算 取余数
print(9 % -4)  # 公式 余数=被除数-除数*商 9-（-4）*（-3）=-3
print(-9 % 4)  # -9-4*（-3）=3

print(2 ** 3)  # 2的3次方

print('赋值运算符')
# 赋值运算符
a = b = c = 20
print(a, id(a))  # 存储同一个值
print(b, id(b))
print(c, id(c))

a += 2  # 相当于a=a+2

# 解包赋值
a, b, c = 20, 30, 40
print(a)
print(b)
print(c)
# 应用交换值
a, b = 20, 30
print('交换前', a, b)
a, b = b, a
print('交换后', a, b)

print('比较运算符')
# 比较运算符  结果为True或False
a, b = 10, 20
print('a>b吗？', a > b)
list1 = [11, 22, 33, 44]
list2 = [11, 22, 33, 44]
print(list1 == list2)  # 比较值
print(list1 is list2)  # 比较地址id是否相等
print(list1 is not list2)  # 比较id不相等

print('布尔运算符')
# 布尔运算符  and or not in not in
f1 = True
f2 = False
print(f1 and f2)
print(f1 or f2)
print(not f1)

s = 'helloworld'
print('w' in s)  # 判断w是否在s中
print('t' not in s)

# 位运算
print('位运算')
# & | << >>  将十进制转换为二进制
print(4 & 5)  # 按位与 同为1时为1 其他情况为0
# 100
# 101
# 100 结果为4
print(4 | 5)  # 按位或 同为0时为0 其他情况为1
# 100
# 101
# 101 结果为5
print(4 << 1)  # 二进制向左移动一位  相当于*2 移动两位相当于*4
#  00000100 
# 000001000 高位舍弃低位补零 8
print(4 >> 1)  # 二进制向右移动一位  相当于/2 移动两位相当于/4
#  00000100 
#  00000010 高位补零低位舍弃 2
